package com.tfjybj.itoo.teach.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.teach.entity.AdmTeachClassEntity;
import com.tfjybj.itoo.teach.model.ClassModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * AdmTeachClassDao接口
 * admTeachClass表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
@Repository("admTeachClassDao")
public interface AdmTeachClassDao extends BaseMapper<AdmTeachClassEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据行政班id模糊查询admTeachClass
     *
     * @param classId  行政班id
     * @return 模糊查询的admTeachClass集合
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<AdmTeachClassEntity> queryLikeClassId(@Param("classId") String classId);
	//endregion

    /* **********************************以下为非模板生成的内容********************************* */

    /**
     * 根据上课班ID查询行政班code,行政班名称,所属学院
     *
     * @param teachClassId 上课班ID
     * @return  ClassModel
     * @author 严文文
     * @since 2.0.0 2018-11-17 08:58:33
     */
    List<ClassModel> queryClassInfoByTeacherClassId(@Param("teachClassId") String teachClassId);

    /**
     * 根据专业ID查询所属学院
     *
     * @param professionId  专业ID
     * @return  String
     * @author 严文文
     * @since 2.0.0 2018-11-22 20:50:32
     */
    String queryAcademyNameByProfessionId(@Param("professionId") String professionId);

    /**
     * 删除上课班对应的行政班信息
     *
     * @param classIds       行政班id
     * @param teachClassId  上课班ID
     * @param operator      操作者
     * @return 删除结果
     * @author 严文文
     * @since 2.0.0 2018-11-13 09:04:41
     */
    int deleteAdmTeachclass(@Param("classIds") List<String> classIds, @Param("teachClassId") String teachClassId, @Param("operator") String operator);
    /**
     * 根据学生ID查询班级名称
     *
     * @param studentId  学生id
     * @return String
     * @author 严文文
     * @since 2.0.0 2018-11-22 21:32:09
     */
    String queryClassNameByStudentId(@Param("studentId") String studentId);

    /**
     * 分页根据关键词模糊查询行政班code或行政班名称
     *
     * @param strLike         模糊关键词
     * @param teachClassId   上课班ID
     * @return ClassModel
     * @author 严文文
     * @since 2.0.0 2018-11-19 21:08:06
     */
    List<ClassModel> queryAdmTeachClassInfoByNameStrLike(@Param("strLike") String strLike, @Param("teachClassId") String teachClassId);
    /**
     * 分页根据关键词模糊查询行政班code和行政班名称
     *
     * @param classCode        行政班名称
     * @param className       行政班code
     * @param teachClassId   上课班ID
     * @return  ClassModel
     * @author 严文文
     * @since 2.0.0 2018-11-19 21:08:06
     */
    List<ClassModel> queryAdmTeachClassInfoByCodeAndNameStrLike(@Param("classCode") String classCode, @Param("className") String className, @Param("teachClassId") String teachClassId);

    /**
     * 根据上课班ID和行政班ID查询id
     *
     * @param classId        行政班id
     * @param teachClassId  上课班ID
     * @return  String
     * @author 严文文
     * @since 2.0.0 2018-11-19 21:08:06
     */
    String findIdIsExist(@Param("classId") String classId, @Param("teachClassId") String teachClassId);

    /**
     *判断是否重复添加，根据classId和teachClassId
     *
     * @param classId        行政班id
     * @param teachClassId  上课班ID
     * @return Boolean
     * @author 胡泽宽
     * @since 2.0.0 2018年12月2日 10:49:34
     */
    int checkByclassIdandteachClassId(@Param("classId") String classId, @Param("teachClassId") String teachClassId);

    /**
     * 根据行政班ids和上课班ID查询ID
     * @param classIds       行政班集合
     * @param teachClassId   上课班ID
     * @return  List
     * @author 严文文
     * @since 2.0.0 2018-12-5 11:01:38
     */

    List<String> queryIdsByclassIdsAndTeachClassId(@Param("classIds") List<String> classIds, @Param("teachClassId") String teachClassId);


    /**
     * 根据上课班id,行政班id查询id
     *
     * @param classId   行政班id
     * @param teachClassId  上课班ID
     * @return  String
     * @author 严文文
     * @since 2.0.0 2018-12-5 14:53:33
     */
    String  queryIdByClassIdAndTeachClassId(@Param("classId") String classId, @Param("teachClassId") String teachClassId);

    /**
     * 根据上课班id删除上课班
     *
     * @param teachClassId  上课班ID
     * @param operator      操作者
     * @return int
     * @author 严文文
     * @since 2.0.0 2018-12-5 14:53:33
     */
    int deleteByteachClassId(@Param("teachClassId") String teachClassId, @Param("operator") String operator);
}
